package com.usdt.system.service.cp;

import java.util.List;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.usdt.system.domain.cp.VisitRegisterEntity;
import com.usdt.system.domain.req.BatchTransferOutReqVO;
import com.usdt.system.domain.req.CallbackRecordReqVO;
import com.usdt.system.domain.req.TransferOutReqVO;
import com.usdt.system.domain.req.VisitRecordReqVO;
import com.usdt.system.domain.req.VisitRegisterListExportReqVO;
import com.usdt.system.domain.req.VisitRegisterReqVO;
import com.usdt.system.domain.resp.BatchVisitRespVO;
import com.usdt.system.domain.resp.VisitRegisterListRespVO;
import com.usdt.system.domain.resp.VisitRegisterRespVO;
import com.usdt.system.dto.cp.VisitRegisterListExcelDTO;

/**
 * <p>
 * 到访登记 服务类
 * </p>
 *
 * @author L
 * @since 2025-10-04
 */
public interface VisitRegisterService extends IService<VisitRegisterEntity> {
	
	IPage<VisitRegisterListRespVO> list(String channel, String keyWord, String startDate, String endDate, String customerStatus, String userId,
			Integer pageNum, Integer pageSize);

	Boolean insert(VisitRegisterReqVO vo);

	Integer update(Integer id,VisitRegisterReqVO vo);

	VisitRegisterRespVO detail(Integer id);

	Boolean transferOut(Integer id, TransferOutReqVO vo);

	Boolean visitRecord(Integer id,VisitRecordReqVO vo);

	Boolean callbackRecord(Integer id,CallbackRecordReqVO vo);

	List<VisitRegisterListExcelDTO> listExport(VisitRegisterListExportReqVO vo);

	/**根据手机号，部门ids查询到访登记
	 * @param phoneNumber
	 * @param deptIds
	 * @return
	 */
	List<BatchVisitRespVO> getVisitByPhoneNumber(String phoneNumber, List<String> deptIds);

	/**批量转出
	 * @param vo
	 * @return
	 */
	Boolean batchTransferOut(BatchTransferOutReqVO vo);

	/**到访批量转出分页列表
	 * @param source
	 * @param userId
	 * @param deptId
	 * @param pageNum
	 * @param pageSize
	 * @return
	 */
	IPage<BatchVisitRespVO> batchVisitTransferOutPage(List<String> sourceList, String userId, List<String> deptIds,String phoneNumber, Integer pageNum,
			Integer pageSize);



}
